home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 22 / Cream of the Crop 22.iso / program / ctlib100.zip / INSTALL.LZH / COLLECT8.PAS < prev    next >
Pascal/Delphi Source File  |  1996-10-12  |  3KB  |  108 lines

  1. {**************************************************************************}
  2. {*  BitSoft Development, L.L.C.                                           *}
  3. {*  Copyright (C) 1995, 1996 BitSoft Development, L.L.C.                  *}
  4. {*  All rights reserved.                                                  *}
  5. {*  Containers Library demo                                               *}
  6. {**************************************************************************}
  7.  
  8. program Collect8;
  9.  
  10. {$X+}
  11.  
  12. { Sample program for using a huge EMS unsorted string collection. }
  13.  
  14. uses Objects, Containr, ctCollec,
  15.      {$ifdef Windows}
  16.      WinCtr;
  17.      {$else}
  18.      Crt;
  19.      {$endif}
  20.  
  21. procedure DisplayStrings(StringList : PSequence);
  22.  
  23.   procedure PrintString(Str : PString); far;
  24.   begin
  25.     Writeln(Str^);
  26.   end;
  27.  
  28. begin
  29.   StringList^.ForEach(@PrintString);
  30. end;
  31.  
  32. procedure DisplayFirst(StringList : PSequence);
  33. var
  34.   Item : Pointer;
  35.   Index : LongInt;
  36. begin
  37.   Item := StringList^.First(Index);
  38.   Writeln('First item:');
  39.   writeln(PString(Item)^);
  40.   StringList^.DoneItem(Item); { not required }
  41. end;
  42.  
  43. procedure DisplayLast(StringList : PSequence);
  44. var
  45.   Item : Pointer;
  46.   Index : LongInt;
  47. begin
  48.   Item := StringList^.Last(Index);
  49.   Writeln('Last item:');
  50.   writeln(PString(Item)^);
  51.   StringList^.DoneItem(Item); { not required }
  52. end;
  53.  
  54. procedure FindString(StringList : PSequence;  SearchStr : string);
  55. var
  56.   Item : Pointer;
  57.   Index : LongInt;
  58.  
  59.   function MatchString (Str : PString): boolean; far;
  60.   begin
  61.     MatchString := (SearchStr = Str^);
  62.   end;
  63.  
  64. begin
  65.   Item := StringList^.FirstThat(@MatchString, Index);
  66.   if Item <> nil
  67.     then begin
  68.            Writeln('String found:');
  69.            Writeln(PString(Item)^);
  70.          end
  71.     else Writeln('String not found.');
  72.   StringList^.DoneItem(Item); { not required }
  73. end;
  74.  
  75. var
  76.   StringList : PEmsUnSortedStrCollection;
  77.  
  78. begin
  79.   ClrScr;
  80.  
  81.   { Create the collection }
  82.   StringList := New(PEmsUnSortedStrCollection, Init(50, 10));
  83.   if StringList = nil
  84.     then begin
  85.            Writeln('No EMS memory available.');
  86.            Halt(1);
  87.          end; { if }
  88.  
  89.   { Insert items into the collection }
  90.   with StringList^ do
  91.   begin
  92.     Insert(NewStr('Sky'));
  93.     Insert(NewStr('Absolute'));
  94.     Insert(NewStr('Temporary'));
  95.     Insert(NewStr('Field'));
  96.   end; { with }
  97.  
  98.   DisplayStrings(StringList);
  99.   Writeln;
  100.   DisplayFirst(StringList);
  101.   Writeln;
  102.   DisplayLast(StringList);
  103.   Writeln;
  104.   FindString(StringList, 'Field');
  105.  
  106.   { Dispose of the collection and all the objects in it }
  107.   Dispose(StringList, Done);
  108. end.